package com.cdsxt.base;

import java.util.List;
import java.util.Map;

/**
 * 
 * @author 成都尚学堂 & mr zeng
 * 客服热线：028-65176856
 * 网址： www.cd-sxt.com
 * 
 * @param <PoCls>传入当前dao层对应的po类型
 */
public  interface BaseDao<PoCls extends BaseEntity>  {
	
	//查询所有的表数据
	public List<PoCls> findAll() ;
	
	//分页查询所有的数据
	public List<PoCls> findByPage(Integer start,Integer limit);
	//id查询一条数据
	public PoCls findById(Object id) ;
	
	//id列表查询多条数据
	public List<PoCls> findBatchById(List<Object> listId) ;
	
	/**
	 * 查询【列表数据：多行数据】，根据任意条件，表中的数据条件判断，分页信息，吧结果封装到自定义类型
	 * @param params 条件参数
	 * @return 返回的多行查询数据
	 * 
	 * AnyParamType 参数类型（基础类型，javabean，map，list）
	 * AnyReturnType 返回数据类型（基本类型，字符串，javaBean，map等等）
	 */
	
	public <AnyReturnType,AnyParamType>  List<AnyReturnType> findListCusTypeByCondition(AnyParamType params);

	//插入数据： 不为null才插入
	public void saveNotNullField(PoCls po) ;
	/**
	 * 批量插入：数据不为null才插入
	 * @param listPo 插入的多个数据
	 */
	public void saveBatchNotNullField(List<PoCls> listPo) ;

	//通过id把其他属性替换了
	public void updateAllFieldById(PoCls po);
	//通过id把非空属性替换了
	public void updateNotNullFieldById(PoCls upPo);
	
	//通过id删除一条数据
	public void deleteById(Object id) ;
	
	/**
	 * 批量删除
	 * @param listId 删除的多个id
	 */
	public void deleteBatchById(List<Object> listId) ;
	
}
